/*!
 * \file GapStateMap.h
 * \brief State map GAP protocol in Serving Gateway
 */

#ifndef SGW_GAP_STATE_MAP_H
#define SGW_GAP_STATE_MAP_H

#include "GapStateIdle.h"
#include "GapStateConnected.h"
#include "GapStateEchoPend.h"


namespace tsc
{
namespace sgw
{

/**
 * State map for GAP protocol in Serving Gateway
 */
class GapStateMap
{
public:

	/**
	 * Returns singleton instance of the map
	 * \return an instance of the state map
	 */
	static GapStateMap& instance();

	common::StateBase* initialState() const;

	static GapStateIdle*      mpStateIdle;
	static GapStateConnected* mpStateConnected;
	static GapStateEchoPend*  mpStateEchoPend;

private:

	GapStateMap();

	virtual ~GapStateMap();

};

} // namespace sgw
} // namespace tsc

#endif // SGW_GAP_STATE_MAP_H
